﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.ComponentModel;
using System.Collections.ObjectModel;

namespace AlbumArtOrganizer.ImageFinder
{
    public abstract class ImageFinder : IImageFinder
    {
        public abstract string Name
        {
            get;
            set;
        }

        public abstract bool IsSearchAvailable
        {
            get;
            set;
        }

        public abstract AlbumArtOrganizer.Model.IAlbum CurrentAlbum
        {
            get;
            set;
        }

        public abstract ObservableCollection<AlbumArtOrganizer.Model.IOption> Options
        {
            get;
            set;
        }

        public abstract string GetSearchString(string artistName, string albumTitle);

        public abstract IImageFinderResults FindImages(string artistName, string albumTitle);

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}
